﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Campeonato.Model.Sort
{
    public static class ComparadorRanking
    {
        public static int ComparaDuasPontuacoes(Pontuacao p1, Pontuacao p2)
        {
            if (p1 == null)
            {
                if (p2 == null)
                {
                    return 0;
                }
                else
                {
                    return -1;
                }
            }
            else
            {

                if (p2 == null)
                // ...and y is null, x is greater.
                {
                    return 1;
                }
                else
                {
                    if (p1.TotalPontos != p2.TotalPontos)
                    {
                        return p2.TotalPontos.CompareTo(p1.TotalPontos);
                    }
                    else if (p1.NumVitorias != p2.NumVitorias)
                    {
                        return p2.NumVitorias.CompareTo(p1.NumVitorias);
                    }
                    else if (p1.SaldoDeGols != p2.SaldoDeGols)
                    {
                        return p2.SaldoDeGols.CompareTo(p1.SaldoDeGols);
                    }
                    else if (p1.GolsPro != p2.GolsPro)
                    {
                        return p2.GolsPro.CompareTo(p1.GolsPro);
                    }
                    else if (p1.GolsContra != p2.GolsContra)
                    {
                        return p1.GolsContra.CompareTo(p2.GolsContra);
                    }
                    else if (p1.NumEmpates != p2.NumEmpates)
                    {
                        return p1.NumEmpates.CompareTo(p2.NumEmpates);
                    }
                    else if (p1.NumDerrotas != p2.NumDerrotas)
                    {
                        return p1.NumDerrotas.CompareTo(p2.NumDerrotas);
                    }
                    else
                    {
                        return p1.Jogador.Nome.CompareTo(p2.Jogador.Nome);
                    }
                }
            }//else
        }

        public static int ComparaJogadoresRanking(Jogador _j1, Jogador _j2)
        {
            if (_j1 == null)
            {
                if (_j2 == null)
                {
                    return 0;
                }
                else
                {
                    return -1;
                }
            }
            else
            {
                if (_j2 == null)                
                {
                    return 1;
                }
                else
                {
                    return ComparaDuasPontuacoes(_j1.Pontos, _j2.Pontos);
                }
            }
        }
    }
}
